As is known in the art, on form of data protection is to append to each block of data a CRC. As is known, a CRC is derived from, and stored or transmitted with, a block of data in order to detect corruption. By recalculating the CRC and comparing it to the value originally transmitted, the receiver can detect some types of transmission errors.
As is also known in the art, one type of data storage system is a RAID system. One type of such RAID system stores data on disk drives. One such RAID system includes a separate disk drive to store parity bits. Also, in one type of RAID system the data is stored in stripes. More particularly, a plurality of disk drives is provided. When a plurality of blocks of data is to be stored, each one of the blocks of data is stored in a corresponding one of the plurality of disk drives as shown in FIG. 1A. Thus, in this example, there are four blocks of data, D0–D3. During a write, blocks of data D0–D3 become stored in disk drives DD0–DD3, respectively. Further the blocks of data D0–D3 are XORd to compute a party bit which is stored in a parity disk drive DD_Parity, as shown. It is noted that when the blocks of data D0–D3 are transmitted to disk drives DD0–DD3, respectively, the corresponding one of a plurality of directors Director 0–Director 3 first receives the block of data D0–D3, respectively, transmitted thereto along with a CRC; i.e., CRC0–CRC3, respectively, associated with each one of the blocks of data D0–D3. Thus, considering for example Director 0, such Director 0 receives data block D0 along with its associated CRC, i.e., CRC0. In like manner Directors 1–Director 3 receive data blocks D1–D3, respectively, and CRC1–CRC3, respectively. The directors then calculates the CRC of the block of data it receives and compares it with the CRC sent to it from the data source, here, for example, a semiconductor memory. If the calculated CRC matches the transmitted CRC, the data is transmitted by the director to its corresponding disk drive along with the CRC.
During a read, as shown in FIG. 1B, the blocks of data are read from the disk drives. The directors calculate the CRC from the read data block it receives and compares it with the CRC read from the disk drive. If they match the data block is transmitted to the memory. Also sent to the memory is the parity bit of the data blocks D0–D3 stored in the parity disk drive DD_PARITY.